Next: Clamps/Common Music , Previous: Mehr zu Listen , Up: Common Lisp , Home: Allgemeine Einführung

Algorithmische Komposition mit Common Lisp

Aufgaben [ A2.2 ]

  • [ A2.2.1 ]

    Stellen Sie den folgenden Ausdruck in Lisp Notation dar:

    (17 * (1631 - 13 + (4 * (8 + 3))))

  • [ A2.2.2 ]

    Die Formel für die Umrechnung einer Centzahl in ein Frequenzverhältnis lautet: 2 ^ (centzahl/1200)

    \(x=2^{centzahl\over{1200}}\)

    Stellen Sie den Lisp Ausdruck zur Errechnung das Frequenzverhältnisses für folgende Intervalle (in Cent) dar:

    1200 Cent, 700 Cent, 400 Cent, 100 Cent, 50 Cent

  • [ A2.2.3 ]

    Die Formel für die Umkehrfunktion zur Umrechnung eines Frequenzverhältnisses (fv) in eine Centzahl lautet:

    1200 * log2(fv) \(1200 * log_2 (fv)\)

    Stellen Sie den Lispausdruck für die Umrechnug folgender Frequenzverhältnisse in Cent dar:

    4/5, 3/2, 9/8

    Hinweis: Die Basis eines Logarithmus kann bei Lisp als zweites Argument zur log Funktion angegeben werden. Der Logarithmnus zur Basis 2 von 8 wird also folgendermaßen dargestellt: (log 8 2) -> 3

  • [ A2.2.4 ]

    Bitte definieren Sie die Funktionen ct->fv und fv->ct, die eine Umrechnung von Cent in ein Frequenzverhältnis und umgekehrt von einem Frequenzverhältnis in Cent ausführen. Der Rahmen der Funktionen ist im folgenden Codebeispiel gegeben. Bitte ersetzen Sie jeweils den mit <body> angegebenen Teil.

    (defun ct->fv (ct)
      <body>
      )
    
    (defun fv->ct (fv)
      <body>
      )
    
  • [ A2.2.5 ]

    Bitte überprüfen Sie die in den Aufgaben A2.2.2 und A2.2.3 errechneten Werte durch Einsetzen in die Funktionsausdrücke von Aufgabe A2.2.44.

  • [ A2.2.6 ]

    Bitte ermitteln Sie die Intervalle der ersten 8 harmonischen Partialtöne in Cent.

  • [ A2.2.7 ]

    Bitte ermitteln Sie die Frequenz eines Tones, der genau einen temperierten Viertelton über einem Ton mit der Frequenz von 443 Hz schwingt.

  • [ A2.2.8 ]

    Bitte stellen Sie in den folgenden Beispielen den Lispausdruck dar, mit Hilfe dessen man die Se ite links vom -> in den Ausdruck rechts vom -> überführen kann:

    ;;; '(1 2 3) '(4 5 6) -> (1 2 3 4 5 6)
    
    ;;; 1 '(2 3) -> (1 2 3)
    
    ;;; '(1 2 3) -> 1
    
    ;;; '(1 2 3) -> (2 3)
    
    ;;; '((1 2 3)) -> (1 2 3)
    
    ;;; '(1 2 3) -> ((1 2 3))
    
    ;;; '(1 2 3 4 5 6 7) -> (1 2 3 4)
    
    ;;; '(1 2 3 4 5 6 7) -> (5 6 7)
    
    ;;; '(1 2 3 4 5 6 7) -> (3 4 5)
    
    ;;; '((1 2 3) (4 5 6) (7 8 9)) -> (1 2 3 4 5 6 7 8 9)